#!/bin/bash
#清空部分过期日志，以维护磁盘空间
#清空docker目录下大于5G的json log，删除超过60天的json log
docker_dir_default="/var/lib/docker/containers/"
docker_dir_new="/data/lib/docker/containers/"
if [ -e $docker_dir_default ]
then
for i in  `find ${docker_dir_default}/ -type f  -size +5G  -name  *-json.log`
do
    cat /dev/null > $i 
done
for j in `find ${docker_dir_default}/ -type f  -ctime +60 -mtime +60  -name  *-json.log`
do 
    cat /dev/null > $j && rm -rf $j
done
fi

if [ -e $docker_dir_new ]
then
for i in  `find ${docker_dir_new}/ -type f  -size +5G  -name  *-json.log`
do
    cat /dev/null > $i
done
for j in `find ${docker_dir_new}/ -type f  -ctime +60 -mtime +60  -name  *-json.log`
do
    cat /dev/null > $j && rm -rf $j
done
fi

###################################
#app的文本日志
docker_log_volume_dir="/data/docker_volumes/"

#定义清理函数，变量为保留时间和文件大小,按天为单位。
dellog()
{
expire_date=$1
expire_size=$2
for i in `find ${docker_log_volume_dir} -type f -size +$expire_size -ctime +$expire_date  -mtime +$expire_date -name  '*.log'`
do
    cat /dev/null > $i && rm -rf $i
done
}

#默认最多保留5天日志
dellog "4" "0M"

deadline_percent_log=`df -h | grep /data | grep -v docker| awk '{print $5}'| awk -F% '{print $1}'`
#如果/data空间超过70%,保留36小时之内的日志
if [ $deadline_percent_log -ge 70 ];then
`dellog "2" "0M"`
fi


deadline_percent_log=`df -h | grep /data | grep -v docker| awk '{print $5}'| awk -F% '{print $1}'`
#如果/data空间超过70%,保留24小时之内的日志
if [ $deadline_percent_log -ge 70 ];then
`dellog "0" "0M"`
fi


#定义清理函数，变量为保留时间和文件大小，按小时为单位。
dellog2()
{
expire_date=$1
for i in `find ${docker_log_volume_dir} -type f -cmin +$expire_date -mmin +$expire_date -name '*.log'`
do
    cat /dev/null > $i
done
}


deadline_percent_log=`df -h | grep /data | grep -v docker| awk '{print $5}'| awk -F% '{print $1}'`
#如果/data空间超过70%,保留9小时之内的日志
if [ $deadline_percent_log -ge 70 ];then
`dellog2 "540"`
fi


deadline_percent_log=`df -h | grep /data | grep -v docker| awk '{print $5}'| awk -F% '{print $1}'`
#如果/data空间超过70%,保留6小时之内的日志
if [ $deadline_percent_log -ge 70 ];then
`dellog2 "360"`
fi


deadline_percent_log=`df -h | grep /data | grep -v docker| awk '{print $5}'| awk -F% '{print $1}'`
#如果/data空间超过70%,保留3小时之内的日志
if [ $deadline_percent_log -ge 70 ];then
`dellog2 "180"`
fi


deadline_percent_log=`df -h | grep /data | grep -v docker| awk '{print $5}'| awk -F% '{print $1}'`
#如果/data空间超过70%,删除大于70G的日志
if [ $deadline_percent_log -ge 70 ];then
    for i in `find ${docker_log_volume_dir} -type f -size +70G -name '*.log'`;do
    cat /dev/null > $i 
    done
fi
